package com.ivan.toolkit.common;

import java.util.List;

import com.google.common.collect.Lists;

public class Modules implements Module {
	
	private	List<Module> modules = Lists.newLinkedList();
	
	public void register(Module module) {
		if(module != null && !modules.contains(module)) {
			modules.add(module);
		}
	}

	@Override
	public void initialize() {
		for(Module s : modules) {
			s.initialize();
		}
	}

	@Override
	public void terminate() {
		List<Module> tmp = Lists.reverse(modules);
		for(Module s : tmp) {
			s.terminate();
		}
	}

	@Override
	public void execute(Any any) {
		for(Module s : modules) {
			s.execute(any);
		}
	}

}
